package com.dream.common.threadPool;

import com.dream.common.task.ThreadTask;

/**
 * 线程池接口
 * @author : ChenYu
 * @Classname : IDreadThreadPool
 * @Date : 2021/9/13 上午11:33
 */
public interface IThreadPool {

    /**
     * 初始化线程
     * @param poolSize
     * @return
     */
    boolean initPool(int poolSize);
    boolean initPool(int poolSize,String poolName);

    /**
     * 初始化线程
     * @param poolSize
     * @param daemon
     * @return
     */
    boolean initPool(int poolSize, boolean daemon,String poolName);

    /**
     * 开始循环
     */
    void startLoop();

    /**
     * 开启线程
     */
    void start();

    /**
     * 关闭
     * @param waitBreak
     */
    void close(boolean waitBreak);

    /**
     * 添加任务
     * @param task
     * @return
     */
    boolean addTask(ThreadTask task);

    /**
     * 添加任务
     * @param task
     * @param threadIdx
     * @param first
     * @return
     */
    boolean addTask(ThreadTask task, int threadIdx, boolean first);


}
